﻿using BW.WMS.WareHouseManage.Dtos;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;

namespace BW.WMS.WareHouseManage.IServices
{
    public interface IWareHouseManageAppService
    {
        /// <summary>
        /// 新增仓库
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<WarehouseDto> CreateWarehouse(AddWarehouseDto input);

        /// <summary>
        /// 分页查询仓库列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<WarehouseDto>> GetPagedListAsync(PagedWarehouseRequestDto input);

        /// <summary>
        /// 修改仓库信息
        /// </summary>
        /// <param name="id"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<WarehouseDto> UpdateAsync(Guid id, UpdateWarehouseDto input);

        /// <summary>
        /// 删除仓库信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task DeleteAsync(Guid id);

        /// <summary>
        /// 批量删除仓库
        /// </summary>
        /// <param name="ids">仓库ID列表</param>
        /// <returns>删除结果</returns>
        Task<BatchDeleteResultDto> BatchDeleteAsync(List<Guid> ids);

        /// <summary>
        /// 根据仓库编号获取仓库详情
        /// </summary>
        /// <param name="code">仓库编号</param>
        /// <returns>仓库DTO</returns>
        Task<WarehouseDto> GetByCodeAsync(Guid id);

        /// <summary>
        /// 获取仓库列表（用于下拉选择）
        /// </summary>
        Task<List<WarehouseDto>> GetWarehouseListAsync();
    }
}
